iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
Odoo

Odoo16 入門介紹系列 第 17

Day17_odoo_Delegation Inheritance

  • 分享至 

  • xImage
  •  

delegation_inheritance

在 Odoo 中,delegation inheritance 是一種模型(model)繼承的方式,它允許您將一個模型的部分功能委託給另一個模型。這種繼承方式特別適用於需要在多個模型之間共享通用功能的情況,同時保持代碼的結構清晰和可維護性。

https://ithelp.ithome.com.tw/upload/images/20230928/20163098XvaEVyeDWU.png

1.功能模組化: Delegation Inheritance 允許您將一個模型的特定功能模組委託給其他模型
            ,使代碼更具模組化。這有助於提高代碼的可重用性和可維護性。

2.繼承父模型的特性: 委託模型不僅可以擁有自己的字段和方法,還可以繼承父模型的特性
                    ,並對其進行擴展或修改。這使得您可以在不破壞現有功能的情況下進行自定義。

3.委託字段(Delegated Fields):您可以將一個模型的字段委託給另一個模型。這表示某個模型
                               擁有某個字段的所有特性,而不需要再次定義該字段。
                               這對於共享通用字段非常有用。

4.委託方法(Delegated Methods):您可以將一個模型的方法委託給另一個模型,以共享該方法的
                                功能。這樣,多個模型可以重用相同的方法實現。

會擁有自己的DB_Table儲存record,同時影響父類別的DB_Table

當我們希望我們所創建的model,既可以擁有自己的DB_Table,同時可以將新建record存在父類別的DB_Table中,
在這種特殊的情況,我們可以使用Delegation Inheritance:

class News(models.Model):
    _name = 'news'
    _description = 'Delegation Inheritance Demo'
    _inherits = {'res.partner': 'partner_id'}

    partner_id = fields.Many2one('res.partner', string='Partner2', required=True, ondelete='cascade')
    first_name = fields.Char(string='First Name', size=25)

__manifest.py__

......
 'depends': ['library'],
......

使用Delegation Inheritance的時候特別要注意的地方就是在inherits,而且我們也可以發現,在宣告inherits時,我們使用的是字典的型態,這代表了在Delegation Inheritance中,我們指定了patner_id來與父類別同步資料,並且在這類的宣告上,一定要使用Many2one的欄位。


上一篇
Day16_odoo_Prototype Inheritance
下一篇
Day18_odoo_Inheritance總結
系列文
Odoo16 入門介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言